Release 10.1A: OpenEdge Development:
Progress 4GL Handbook
Contrasting procedural and event-driven programs
Understanding the difference between procedural and event-driven programs is one of the most important requirements of learning how to write OpenEdge applications. The program you have written so far is a simple but good example of a procedural program. It executes basically from the top down. When it comes to a statement to
RUNanother procedure, such as thecalcDaysinternal procedure, then it initiates that procedure, passes parameters into it, and when it gets to the end, returns any output parameters, and that’s the end of it. There’s no code placed off to the side for events initiated by the user. The programmer determines the procedure flow. A program doesn’t prompt the user for input until it’s ready to. The user has little ability to move around in the interface flexibly. This is typical of a character interface application. The simple diagram in Figure 5–2 illustrates top-down or hierarchy programming.Figure 5–2: Procedural top-down application flow
![]()
When the procedure
mainproc.prunsa.p, and thena.prunsa1.p, thenmainproc.p,a.p, anda1.pare in memory. Whena1.preturns, its context is removed and it goes out of scope. Whena.preturns, its context is deleted. And only then can the code runb.p, which might runb1.p. The thread of execution goes right up and down through this hierarchy of called procedures.By contrast, your sample procedure from this chapter is a simple but very good example of an event-driven procedure, as illustrated in Figure 5–3. Most of the code the interpreter encounters as it initializes the procedure doesn’t actually get executed. It just sets up bodies of code to run when the user requests it.
Figure 5–3: Event-driven application flow
![]()
|
Copyright © 2005 Progress Software Corporation www.progress.com Voice: (781) 280-4000 Fax: (781) 280-4095 |